技巧9 建立一个本地Docker注册中心

读者已经看到Docker公司具有一项服务,人们可以在其上公开地共享他们的镜像(如果想私下进行,可以付费实现)。不过存在一些不想通过Hub来共享镜像的原因——有些商业组织想尽可能把东西保留在内部;镜像可能很大,通过互联网传输太慢;或者可能想在试验时保持镜像私有化,同时又不想付费。不管出于什么原因,都有一个简单的解决方案。

问题

想要一个在本地托管镜像的方法。

解决方案

在本地网络上建立一个注册中心服务器。

简单地在一台具有大量磁盘空间的机器上发起以下命令:

$ docker run -d -p 5000:5000 -v $HOME/registry:/var/lib/registry registry:2

这条命令让注册中心运行于Docker宿主机的5000端口上( -p 5000:5000 )。使用 -v 标志,它可以使宿主机(/var/lib/registry)上的registry在容器中用作 $HOME/registry 。因此,该registry的文件将存储在/var/lib/registry目录下。

在所有想访问这个注册中心的机器上,将下列内容添加到守护进程选项中( HOSTNAME 是新的注册中心服务器的主机名或IP地址): --insecure-registry HOSTNAME (有关如何执行此操作的详细信息,参见附录B)。现在可以发出 docker push HOSTNAME:5000/image:tag 命令。

正如所见,一个本地注册中心最基础层次的配置很简单,所有数据都存储在 $HOME/registry 目录中。如果要扩容或让它变得更健壮,GitHub上的仓库罗列了一些可选项,例如,在Amazon S3里存储数据。

读者可能会对 --insecure-registry 选项感到好奇。为了帮助用户保持安全,Docker只允许使用签名HTTPS证书从注册中心上拉取。因为对本地网络相当信任,我们覆盖了这个选项。不过,毫无疑问的是,在互联网上这么做必须慎之又慎。

讨论

注册中心的配置是如此简单,带来了许多可能性。如果你的公司有很多团队,你可以建议每个团队在备用机上启动并维护一个注册中心,以容许存储和移动镜像的流动性。

如果你拥有一个内部IP地址段,这一点尤为有效—— --insecure-registry 命令将接受CIDR表示法,比如 10.1.0.0/16 ,用于指定允许的不安全IP地址段。如果你对此不是很熟悉,强烈建议你与网络管理员进行联系。

results matching ""

    No results matching ""